/**
 * 求数组的交集
 * @param {number[]} nums1 
 * @param {number[]} nums2 
 */
var intersection = function (nums1, nums2) {
    const result = new Set()
    // 数组搜索时间复杂度O(n)
    // 利用set或map搜索，时间复杂度O(1)
    for (num of nums1) {
        if (nums2.includes(num)) {
            result.add(num)
        }
    }
    return Array.from(result)
}

// 时间复杂度优化
var intersection2 = function (nums1, nums2) {
    const result = new Set()
    const set = new Set(nums2)
    
    for (num of nums1) {
        if (set.has(num)) {
            result.add(num)
        }
    }
    return Array.from(result)
}